home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Utilities Professional 1-1500
/
Utilities Professional 1-1500 (1994)(WPD)[!].iso
/
12511500
/
var1482.dms
/
var1482.adf
/
Scripts
/
rspheres.mc
< prev
next >
Wrap
Text File
|
1994-07-07
|
8KB
|
318 lines
; This file Copyright 1994 Dan Wesnor
;
; This file may be freely distributed as long as no
; information is changed, no charge is made for
; the file, and the archive in which the file was
; contained is distributed in tact. Any violation
; of these conditions requires written authorization
; by the copyright holder.
/*
This is a script for the Magic Camera rendering system.
Magic Camera (MC) uses ray-tracing for realisting rendering
of shadows, reflections, and transparency. It is in the
final phase of completion and should be released shortly.
Plans are for release as shareware with a nominal charge
for a full working version.
See comments for a description of features.
Comments are either C-style (like this one), or a semi-colon
followed by text ; like this.
*/
/*
Primitive object include triangles and parallelograms,
both of which may be phong smoothed, spheres, rings (or disks),
and planes.
Compound objects, which allow complex shapes to be built,
include extrusions, spins, skin-over-frame, filled complex
2-d polygons (with holes), heightfields, boxes, and
polygon spheres.
Available patterns are check, wood, marble, brick,
several types of bitmap wraps, blotch, and clouds.
Textures include waves and several type of bumpmaps.
Lamps include point-source, directional, directional
spotlights (w/ beam width and beam falloff sharpness
controls), or spherical extended.
Variables, which may be used in complex expressions, include
real numbers, integers, 3d-vectors, and arrays of reals, 2-d vectors,
and 3-d vectors. Variables and arrays may be used to facilitate
animation.
*/
; If you have enough memory, use the first psp_vsegs
; If not, use the second
int psp_vsegs = 12 ; Variables! Allows easy location of key
;int psp_vsegs = 8 ; values at the top of the script, can
int psp_hsegs = psp_vsegs * 2 ; be used in expressions to save
; you the trouble of hand-computing things.
; Can also be used for simple animation.
camera {
loc <-30, 14, -10> ; location of the camera
target <0, 2.5, 0> ; location to point at
; field-of-view, image resolution,
; and pixel aspect ratio may also
; be defined
hfov 35
}
sky {
zenith <0, 0, .5> ; color of the sky straight up
horizon <0, 0, .5> ; color of the sky at the horizon
}
lamp {
loc <-60, 180, -40> ; location of the lamp
color <.8, .8, .8> ; color of the lamp
; lamps may also be 'spotlight' type
; lamps or may cast 'fuzzy' shadows.
}
lamp {
loc <-30, 200, 90> ; another lamp
color <.8, .8, .8>
}
color black { ; create a 'color' type pattern and name it 'black'
diff <0, 0, 0> ; diffuse color (apparent color) in RGB
scoef 100 ; specular coefficient (hot spot size)
srefl 1 ; specular reflection (hot spot brightness)
}
color white { ; another 'color' called 'white'
diff <1, 1, 1>
scoef 100
srefl 1
}
color red_mirror { ; another 'color' called 'red_mirror'
diff <.7, 0, 0>
refl <.5, .5, .5> ; this one is partially reflective
scoef 100
srefl 1
}
color blue_mirror {
diff <0, 0, .7>
refl <.5, .5, .5>
scoef 100
srefl 1
}
color yellow_mirror {
diff <.7, .7, 0>
refl <.5, .5, .5>
scoef 100
srefl 1
}
color silver_mirror {
diff <.5, .5, .5>
refl <.7, .7, .7>
scoef 100
srefl 1
}
iff "mapfiles/ctaany.iff" mc.map ; load a bitmap for patterns
wrapsp redmc { ; a wrapped pattern called 'redmc'
bitmap mc.map ; use the bitmap loaded above
patt red_mirror ; use characteristics of red mirror
sub 0 red_mirror ; substitute the pattern 'red_mirror'
; for pen 0 in the iff bitmap
sub 1 white ; same for pen 1
sub 2 black ; pen 2
sub 3 black ; pen 3
dodiff ; any additional colors found in the
; bitmap will be applied to the
; 'diff' propery of 'red_mirror'
xrep 1 ; the pattern repeats itself once
; around the object's equator
yrep 1 ; and one between the poles
filter 1 ; turn bitmap pre-filtering off
}
wrapsp yellowmc { ; same as above w/ some colors changed
filter 1
bitmap mc.map
patt yellow_mirror
sub 0 yellow_mirror
sub 1 white
sub 2 black
sub 3 black
xrep 1
yrep 1
dodiff
}
wrapsp bluemc { ; same as above w/ some colors changed
filter 1
bitmap mc.map
patt blue_mirror
sub 0 blue_mirror
sub 1 white
sub 2 black
sub 3 black
xrep 1
yrep 1
dodiff
}
wrapsp silvermc { ; same as above w/ some colors changed
filter 1
bitmap mc.map
patt silver_mirror
sub 0 silver_mirror
sub 1 white
sub 2 black
sub 3 black
xrep 1
yrep 1
dodiff
}
color black_refl { ; another 'color' called 'black_refl'
diff <0, 0, 0>
refl <.5, .5, .5>
scoef 100
}
color white_refl { ; another 'color' called 'white_refl'
diff <.9, .9, .9>
refl <.5, .5, .5>
scoef 100
}
check squares { ; a checkerboard pattern
patt1 black_refl ; use 'black_refl' and
patt2 white_refl ; 'white_refl' to form the pattern
xsize 2.5 ; the checks are 2.5
zsize 2.5 ; units square
}
real floorsize = 100.0 ; this variable will be used to control
; the size of the floor. If this is changed
; then the computations below will make
; everything turn out ok.
paragram { ; 'paragram' is short hand for parallelogram,
; so this builds one of those
patt squares ; apply the pattern called 'squares'
; which is the checkerboard from above
loc <-floorsize/2, 0, -floorsize/2> ; the location of the
; parallelogram. it will
; have its center at <0,0,0>
v1 <floorsize, 0, 0> ; v1 and v2 define the vectors to
v2 <0, 0, floorsize> ; two vertices of the parallelogram.
; because of the geometrical definition
; of a parallelogram, the fourth vertex
; is at loc+v1+v2
}
real sphere_rad = 3.0 ; the radius of the spheres
object sphere_ob1 ; create an object called 'sphere_ob1'.
; this is done primarily to allows the
; object to be transformed and reproduced.
; everything between here and 'endobject'
; below belongs to 'sphere_ob1'
psphere { ; a psphere is a polygon-based sphere
radius sphere_rad ; the radius of this sphere
loc <0, 0, 0> ; the center of the sphere
patt yellowmc ; apply the pattern 'yellowmc'
vsegs psp_vsegs ; these two define the number of
hsegs psp_hsegs ; segments used to build the sphere,
; i.e. the number of polygons
smooth ; apply the phong smoothing routines
; to the psphere to make it look smooth
}
endobject ; the end of 'sphere_ob1'
lockobject sphere_ob1 ; lock the object into pattern space so that
; as it is rotated, the pattern will not
; slide around on it
object sphere_ob ; create an object called 'sphere_ob'
translate sphere_ob1 <sphere_rad/cos(30), sphere_rad, 0>
; the above line translates sphere_ob1
; into position to make it look as if it's
; resting on the above parallelogram.
child sphere_ob1 ; make 'sphere_ob1' a 'child' of
; 'sphere_ob'. child object can
; be transformed independently of
; its parent, but will still
; follow the parent transformations.
endobject ; end of sphere_ob
lockobject sphere_ob ; and lock it into pattern space
/*
instance sphere_ob ; a simple instance of 'sphere_ob'
; simple drops it into the scene
*/
xrotate sphere_ob1 43 ; rotate sphere_ob1 so that the patterns
yrotate sphere_ob1 275 ; don't line up too neatly
zrotate sphere_ob1 154
yrotate sphere_ob 120 ; rotate 'sphere_ob' 120 degrees, since we're
; going to create a circle of three.
/*
instance { ; a more complex instance
object sphere_ob
subpatt yellowmc silvermc ; substitute every occurence
; of 'yellowmc' with
; 'silvermc'. allows instances
; of the same object to have
; different colors
}
*/
xrotate sphere_ob1 175 ; again rotate 'sphere_ob1' to
yrotate sphere_ob1 294 ; 'unalign' the patterns
zrotate sphere_ob1 32
yrotate sphere_ob 120 ; and rotate into position
/*
instance { ; and instance it, but blue this time
object sphere_ob
subpatt yellowmc bluemc
}
*/
object sphere_2 ; create another object called 'sphere_2'
psphere {
radius sphere_rad ; the radius
loc <0, sphere_rad*(1+sin(60)+cos(60)), 0>
; if my geometry is correct (not a good bet)
; the above line positions the sphere on top
; of the three just created
patt redmc ; apply the 'redmc' pattern
vsegs psp_vsegs
hsegs psp_hsegs
smooth
}
endobject ; end it
lockobject sphere_2 ; lock it
yrotate sphere_2 225 ; rotate it so the text in the pattern is
; visible
instance sphere_2 ; and drop it into the scene